
#include <iostream>
#include <string>
#include <vector>
#include <boost/smart_ptr.hpp>
#include <boost/make_shared.hpp>

using namespace std;


class tester
{
public:
    tester(){}
    ~tester()
    {
        std::cout << "析构函数被调用!\n";
    }
public:
    boost::shared_ptr<tester> sget()
    {
        return boost::shared_ptr<tester>(this);
    }
};

int main()
{
    tester t;
    boost::shared_ptr<tester> sp =  t.sget();


    std::cout<<"sp use:"<<sp.use_count() <<std::endl;


    return 0;
}


///
//class tester : public boost::enable_shared_from_this<tester>
//{
//public:
//    tester()
//    ~tester()
//    {
//        std::cout << "析构函数被调用!\n";
//    }
//public:
//    boost::shared_ptr<tester> sget()
//    {
//        return shared_from_this();
//    }
//};
//
//int main()
//{
//    boost::shared_ptr<tester> sp(new tester);
//    // 正确使用sp 指针。
//    sp->sget();
//    return 0;
//}


